[INFO] cloning repository https://github.com/ezrasingh/printctl
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ezrasingh/printctl" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fezrasingh%2Fprintctl", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fezrasingh%2Fprintctl'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5ff6e3504ab5065e47932ac1be008fb3f20e0cf9
[INFO] checking ezrasingh/printctl against try#d1d7143153307f561233bd4d93e2a3b24157b081 for pr-151539-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fezrasingh%2Fprintctl" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-6-tc2/source/.cargo/config
[INFO] started tweaking git repo https://github.com/ezrasingh/printctl
[INFO] finished tweaking git repo https://github.com/ezrasingh/printctl
[INFO] tweaked toml for git repo https://github.com/ezrasingh/printctl written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ezrasingh/printctl on toolchain d1d7143153307f561233bd4d93e2a3b24157b081
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d1d7143153307f561233bd4d93e2a3b24157b081" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ezrasingh/printctl already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d1d7143153307f561233bd4d93e2a3b24157b081" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3
[INFO] running `Command { std: "docker" "start" "5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3" "/opt/rustwide/cargo-home/bin/cargo" "+d1d7143153307f561233bd4d93e2a3b24157b081" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3" "/opt/rustwide/cargo-home/bin/cargo" "+d1d7143153307f561233bd4d93e2a3b24157b081" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling instability v0.3.10
[INFO] [stderr]    Compiling owo-colors v4.2.3
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]    Compiling pest v2.8.4
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking object v0.37.3
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking rustc-demangle v0.1.26
[INFO] [stderr]    Compiling erased-serde v0.4.9
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking eyre v0.6.12
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking arrayvec v0.5.2
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking hashlink v0.10.0
[INFO] [stderr]     Checking gcode v0.6.1
[INFO] [stderr]     Checking serde_spanned v1.0.3
[INFO] [stderr]     Checking toml_datetime v0.7.3
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking unicode-ident v1.0.22
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking yaml-rust2 v0.10.4
[INFO] [stderr]     Checking serde-untagged v0.1.9
[INFO] [stderr]     Checking tracing-error v0.2.1
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling pest_meta v2.8.4
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking hostname v0.4.2
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking toml_parser v1.0.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking rust-ini v0.21.3
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking toml v0.9.8
[INFO] [stderr]     Checking backtrace v0.3.76
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling pest_generator v2.8.4
[INFO] [stderr]     Checking color-eyre v0.6.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]    Compiling enum-ordinalize-derive v4.3.2
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling derive_more-impl v2.1.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling pest_derive v2.8.4
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]    Compiling enum-ordinalize v4.3.2
[INFO] [stderr]    Compiling educe v0.6.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking derive_more v2.1.0
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]     Checking unescaper v0.1.6
[INFO] [stderr]     Checking serialport v4.7.3
[INFO] [stderr]     Checking mio-serial v5.0.6
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking ron v0.12.0
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking config v0.15.19
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking ratatui-explorer v0.2.1
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking printctl-ui v0.1.0 (/opt/rustwide/workdir/printctl-ui)
[INFO] [stdout] warning: unused import: `super::split::*`
[INFO] [stdout]  --> printctl-ui/src/tui/components/mod.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub use super::split::*;
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::split::*`
[INFO] [stdout]  --> printctl-ui/src/tui/components/mod.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub use super::split::*;
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `simulator_area`
[INFO] [stdout]   --> printctl-ui/src/tui/features/debugger.rs:74:27
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let [editor_area, simulator_area] = GCodeDebugger::layout(area);
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_simulator_area`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, and `z` are never read
[INFO] [stdout]   --> printctl-ui/src/features/machine.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct HomedAxes {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 10 |     x: bool,
[INFO] [stdout]    |     ^
[INFO] [stdout] 11 |     y: bool,
[INFO] [stdout]    |     ^
[INFO] [stdout] 12 |     z: bool,
[INFO] [stdout]    |     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HomedAxes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]   --> printctl-ui/src/features/machine.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl FanState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     fn stop(&mut self) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fans` and `cooling_fan` are never read
[INFO] [stdout]   --> printctl-ui/src/features/machine.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MachineState {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fans: Vec<FanState>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 76 |     cooling_fan: FanState,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MachineState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_feedrate` is never used
[INFO] [stdout]    --> printctl-ui/src/features/machine.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl MachineState {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn set_feedrate(&mut self, feedrate: Speed) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `before` is never read
[INFO] [stdout]   --> printctl-ui/src/features/snapshot.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Snapshot<B, T>
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     before: MachineState,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Snapshot` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bed_temp` and `tool_temps` are never read
[INFO] [stdout]   --> printctl-ui/src/features/thermal.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct ThermalSnapshot {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 94 |     bed_temp: f32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 95 |     tool_temps: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ThermalSnapshot` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Mouse(MouseEvent),
[INFO] [stdout]    |     ----- ^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 12 -     Mouse(MouseEvent),
[INFO] [stdout] 12 +     Mouse(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Resize(u16, u16),
[INFO] [stdout]    |     ------ ^^^  ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 13 -     Resize(u16, u16),
[INFO] [stdout] 13 +     Resize((), ()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 |     Paste(String),
[INFO] [stdout]    |     ----- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 14 -     Paste(String),
[INFO] [stdout] 14 +     Paste(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Focus(bool),
[INFO] [stdout]    |     ----- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 15 -     Focus(bool),
[INFO] [stdout] 15 +     Focus(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `title` is never used
[INFO] [stdout]   --> printctl-ui/src/tui/components/modal.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl<T> Modal<T> {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 36 |     pub fn title(self, title: &str) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplitLayout` is never constructed
[INFO] [stdout]  --> printctl-ui/src/tui/components/split.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SplitLayout {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `direction`, `item`, and `layout` are never used
[INFO] [stdout]   --> printctl-ui/src/tui/components/split.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl SplitLayout {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(direction: Direction) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn direction(self, direction: Direction) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn item<W>(mut self, item: W) -> Self
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     fn layout(&self, area: Rect) -> Vec<Rect> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file_path` and `simulator` are never read
[INFO] [stdout]   --> printctl-ui/src/tui/features/debugger.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct GCodeDebugger {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 10 |     file_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 11 |     program: GCodeProgram,
[INFO] [stdout] 12 |     simulator: GCodeSimulator,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GCodeDebugger` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `file_name` is never used
[INFO] [stdout]   --> printctl-ui/src/tui/features/debugger.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl GCodeDebugger {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 30 |     fn file_name(&self) -> &str {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `simulator_area`
[INFO] [stdout]   --> printctl-ui/src/tui/features/debugger.rs:74:27
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let [editor_area, simulator_area] = GCodeDebugger::layout(area);
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_simulator_area`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, and `z` are never read
[INFO] [stdout]   --> printctl-ui/src/features/machine.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct HomedAxes {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 10 |     x: bool,
[INFO] [stdout]    |     ^
[INFO] [stdout] 11 |     y: bool,
[INFO] [stdout]    |     ^
[INFO] [stdout] 12 |     z: bool,
[INFO] [stdout]    |     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HomedAxes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stop` is never used
[INFO] [stdout]   --> printctl-ui/src/features/machine.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl FanState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     fn stop(&mut self) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fans` and `cooling_fan` are never read
[INFO] [stdout]   --> printctl-ui/src/features/machine.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct MachineState {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fans: Vec<FanState>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 76 |     cooling_fan: FanState,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MachineState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_feedrate` is never used
[INFO] [stdout]    --> printctl-ui/src/features/machine.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl MachineState {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn set_feedrate(&mut self, feedrate: Speed) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `before` is never read
[INFO] [stdout]   --> printctl-ui/src/features/snapshot.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Snapshot<B, T>
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     before: MachineState,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Snapshot` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bed_temp` and `tool_temps` are never read
[INFO] [stdout]   --> printctl-ui/src/features/thermal.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct ThermalSnapshot {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 94 |     bed_temp: f32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 95 |     tool_temps: Vec<f32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ThermalSnapshot` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Mouse(MouseEvent),
[INFO] [stdout]    |     ----- ^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 12 -     Mouse(MouseEvent),
[INFO] [stdout] 12 +     Mouse(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `0` and `1` are never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     Resize(u16, u16),
[INFO] [stdout]    |     ------ ^^^  ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields
[INFO] [stdout]    |
[INFO] [stdout] 13 -     Resize(u16, u16),
[INFO] [stdout] 13 +     Resize((), ()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 |     Paste(String),
[INFO] [stdout]    |     ----- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 14 -     Paste(String),
[INFO] [stdout] 14 +     Paste(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> printctl-ui/src/tui/input.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     Focus(bool),
[INFO] [stdout]    |     ----- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AppEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 15 -     Focus(bool),
[INFO] [stdout] 15 +     Focus(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `title` is never used
[INFO] [stdout]   --> printctl-ui/src/tui/components/modal.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl<T> Modal<T> {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 36 |     pub fn title(self, title: &str) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplitLayout` is never constructed
[INFO] [stdout]  --> printctl-ui/src/tui/components/split.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SplitLayout {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `direction`, `item`, and `layout` are never used
[INFO] [stdout]   --> printctl-ui/src/tui/components/split.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl SplitLayout {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(direction: Direction) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn direction(self, direction: Direction) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn item<W>(mut self, item: W) -> Self
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     fn layout(&self, area: Rect) -> Vec<Rect> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file_path` and `simulator` are never read
[INFO] [stdout]   --> printctl-ui/src/tui/features/debugger.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct GCodeDebugger {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 10 |     file_path: PathBuf,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 11 |     program: GCodeProgram,
[INFO] [stdout] 12 |     simulator: GCodeSimulator,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GCodeDebugger` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `file_name` is never used
[INFO] [stdout]   --> printctl-ui/src/tui/features/debugger.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl GCodeDebugger {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 30 |     fn file_name(&self) -> &str {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking tokio-serial v5.4.5
[INFO] [stderr]     Checking printctl v0.1.0 (/opt/rustwide/workdir/printctl)
[INFO] [stdout] warning: variant `NotConnected` is never constructed
[INFO] [stdout]   --> printctl/src/error.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Error {
[INFO] [stdout]    |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     NotConnected,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `printers`, and `job_logs` are never read
[INFO] [stdout]   --> printctl/src/agent/mod.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct PrintAgent {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 14 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     printers: HashMap<String, Printer>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     job_logs: HashMap<Uuid, Vec<models::JobLogEntry>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name`, `start_printer`, `get_job`, and `get_job_logs` are never used
[INFO] [stdout]   --> printctl/src/agent/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl PrintAgent {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub async fn start_printer(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn get_job(&self, job_id: Uuid) -> Option<&models::Job> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn get_job_logs(&self, job_id: Uuid) -> Option<&Vec<models::JobLogEntry>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `content` are never read
[INFO] [stdout]  --> printctl/src/agent/models.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct GcodeFile {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] 6 |     pub id: Uuid,
[INFO] [stdout] 7 |     pub name: std::ffi::OsString,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 8 |     pub content: Vec<u8>,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `GcodeFile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Running`, `Completed`, and `Failed` are never constructed
[INFO] [stdout]   --> printctl/src/agent/models.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum JobStatus {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 13 |     Queued,
[INFO] [stdout] 14 |     Running,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 15 |     Completed,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 16 |     Failed(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JobStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `printer_id`, `gcode_file_id`, `status`, `created_at`, `started_at`, and `finished_at` are never read
[INFO] [stdout]   --> printctl/src/agent/models.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Job {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 21 |     pub id: Uuid,
[INFO] [stdout] 22 |     pub printer_id: Uuid,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 23 |     pub gcode_file_id: Uuid,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub status: JobStatus,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 25 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 26 |     pub started_at: Option<DateTime<Utc>>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 27 |     pub finished_at: Option<DateTime<Utc>>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Job` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timestamp` and `message` are never read
[INFO] [stdout]   --> printctl/src/agent/models.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct JobLogEntry {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 32 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 33 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JobLogEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `gcode_lines` is never used
[INFO] [stdout]   --> printctl/src/agent/models.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl Job {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 38 |     pub fn gcode_lines(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Write`, `ReadLine`, `QueueJob`, and `StartNextJob` are never constructed
[INFO] [stdout]   --> printctl/src/printer/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum PrinterCommand {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 15 |     Write(Vec<u8>, oneshot::Sender<Result<()>>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     ReadLine(oneshot::Sender<Result<String>>),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 17 |     QueueJob(models::Job),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 18 |     StartNextJob,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PrinterCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> printctl/src/printer/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Printer {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 23 |     pub tag: Option<String>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 24 |     pub port_path: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub state: Arc<Mutex<PrinterState>>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub job_queue: Arc<Mutex<VecDeque<models::Job>>>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     cmd_tx: mpsc::Sender<PrinterCommand>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub serial_rx: broadcast::Sender<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     connection: Arc<Mutex<Option<tokio_serial::SerialStream>>>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Printer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `spawn_worker` are never used
[INFO] [stdout]   --> printctl/src/printer/mod.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Printer {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 43 |     pub async fn new(path: &str, baud: u32, tag: Option<String>) -> Result<Self> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn spawn_worker(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write`, `read_line`, `queue_job`, `start_next_job`, and `subscribe` are never used
[INFO] [stdout]    --> printctl/src/printer/mod.rs:163:18
[INFO] [stdout]     |
[INFO] [stdout] 162 | impl Printer {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 163 |     pub async fn write(&self, data: Vec<u8>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn read_line(&self) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn queue_job(&self, job: models::Job) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub async fn start_next_job(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn subscribe(&self) -> broadcast::Receiver<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> printctl/src/printer/state.rs:5:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct ToolState {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout]  5 |     pub temp: f32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]  6 |     pub target: f32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]  7 |     pub pwm: u8,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]  8 |     pub x: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout]  9 |     pub y: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 10 |     pub z: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 11 |     pub e: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tools`, `bed`, `fan_speed`, `ready`, and `last_error` are never read
[INFO] [stdout]   --> printctl/src/printer/state.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PrinterState {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 30 |     pub tools: HashMap<usize, ToolState>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 31 |     pub bed: ToolState,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 32 |     pub fan_speed: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 33 |     pub ready: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 34 |     pub last_error: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PrinterState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_from_line`, `parse_temperature_report`, `parse_position_report`, and `parse_fan_report` are never used
[INFO] [stdout]    --> printctl/src/printer/state.rs:50:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl PrinterState {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout]  50 |     pub fn update_from_line(&mut self, line: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     fn parse_temperature_report(&mut self, raw: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn parse_position_report(&mut self, raw: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn parse_fan_report(&mut self, raw: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_temp_pair` is never used
[INFO] [stdout]    --> printctl/src/printer/state.rs:158:4
[INFO] [stdout]     |
[INFO] [stdout] 158 | fn parse_temp_pair(s: &str) -> Option<(f32, f32)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_f32` is never used
[INFO] [stdout]    --> printctl/src/printer/state.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn parse_f32(s: &str, fallback: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotConnected` is never constructed
[INFO] [stdout]   --> printctl/src/error.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Error {
[INFO] [stdout]    |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 12 |     NotConnected,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Error` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `printers`, and `job_logs` are never read
[INFO] [stdout]   --> printctl/src/agent/mod.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct PrintAgent {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 14 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     printers: HashMap<String, Printer>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     job_logs: HashMap<Uuid, Vec<models::JobLogEntry>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name`, `start_printer`, `get_job`, and `get_job_logs` are never used
[INFO] [stdout]   --> printctl/src/agent/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl PrintAgent {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub async fn start_printer(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn get_job(&self, job_id: Uuid) -> Option<&models::Job> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn get_job_logs(&self, job_id: Uuid) -> Option<&Vec<models::JobLogEntry>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `content` are never read
[INFO] [stdout]  --> printctl/src/agent/models.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct GcodeFile {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] 6 |     pub id: Uuid,
[INFO] [stdout] 7 |     pub name: std::ffi::OsString,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 8 |     pub content: Vec<u8>,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `GcodeFile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Running`, `Completed`, and `Failed` are never constructed
[INFO] [stdout]   --> printctl/src/agent/models.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum JobStatus {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 13 |     Queued,
[INFO] [stdout] 14 |     Running,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 15 |     Completed,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 16 |     Failed(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JobStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `printer_id`, `gcode_file_id`, `status`, `created_at`, `started_at`, and `finished_at` are never read
[INFO] [stdout]   --> printctl/src/agent/models.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Job {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 21 |     pub id: Uuid,
[INFO] [stdout] 22 |     pub printer_id: Uuid,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 23 |     pub gcode_file_id: Uuid,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub status: JobStatus,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 25 |     pub created_at: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 26 |     pub started_at: Option<DateTime<Utc>>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 27 |     pub finished_at: Option<DateTime<Utc>>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Job` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timestamp` and `message` are never read
[INFO] [stdout]   --> printctl/src/agent/models.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct JobLogEntry {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 32 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 33 |     pub message: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `JobLogEntry` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `gcode_lines` is never used
[INFO] [stdout]   --> printctl/src/agent/models.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl Job {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 38 |     pub fn gcode_lines(&self) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Write`, `ReadLine`, `QueueJob`, and `StartNextJob` are never constructed
[INFO] [stdout]   --> printctl/src/printer/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum PrinterCommand {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 15 |     Write(Vec<u8>, oneshot::Sender<Result<()>>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 16 |     ReadLine(oneshot::Sender<Result<String>>),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 17 |     QueueJob(models::Job),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 18 |     StartNextJob,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PrinterCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> printctl/src/printer/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Printer {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 23 |     pub tag: Option<String>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 24 |     pub port_path: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub state: Arc<Mutex<PrinterState>>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub job_queue: Arc<Mutex<VecDeque<models::Job>>>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     cmd_tx: mpsc::Sender<PrinterCommand>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub serial_rx: broadcast::Sender<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     connection: Arc<Mutex<Option<tokio_serial::SerialStream>>>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Printer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `spawn_worker` are never used
[INFO] [stdout]   --> printctl/src/printer/mod.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Printer {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 43 |     pub async fn new(path: &str, baud: u32, tag: Option<String>) -> Result<Self> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn spawn_worker(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `write`, `read_line`, `queue_job`, `start_next_job`, and `subscribe` are never used
[INFO] [stdout]    --> printctl/src/printer/mod.rs:163:18
[INFO] [stdout]     |
[INFO] [stdout] 162 | impl Printer {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] 163 |     pub async fn write(&self, data: Vec<u8>) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub async fn read_line(&self) -> Result<String> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub async fn queue_job(&self, job: models::Job) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub async fn start_next_job(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn subscribe(&self) -> broadcast::Receiver<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> printctl/src/printer/state.rs:5:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct ToolState {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout]  5 |     pub temp: f32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]  6 |     pub target: f32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]  7 |     pub pwm: u8,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]  8 |     pub x: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout]  9 |     pub y: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 10 |     pub z: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 11 |     pub e: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ToolState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tools`, `bed`, `fan_speed`, `ready`, and `last_error` are never read
[INFO] [stdout]   --> printctl/src/printer/state.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PrinterState {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 30 |     pub tools: HashMap<usize, ToolState>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 31 |     pub bed: ToolState,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 32 |     pub fan_speed: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 33 |     pub ready: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 34 |     pub last_error: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PrinterState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_from_line`, `parse_temperature_report`, `parse_position_report`, and `parse_fan_report` are never used
[INFO] [stdout]    --> printctl/src/printer/state.rs:50:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl PrinterState {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout]  50 |     pub fn update_from_line(&mut self, line: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     fn parse_temperature_report(&mut self, raw: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn parse_position_report(&mut self, raw: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     fn parse_fan_report(&mut self, raw: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_temp_pair` is never used
[INFO] [stdout]    --> printctl/src/printer/state.rs:158:4
[INFO] [stdout]     |
[INFO] [stdout] 158 | fn parse_temp_pair(s: &str) -> Option<(f32, f32)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_f32` is never used
[INFO] [stdout]    --> printctl/src/printer/state.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn parse_f32(s: &str, fallback: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 44.67s
[INFO] running `Command { std: "docker" "inspect" "5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3", kill_on_drop: false }`
[INFO] [stdout] 5a5c7bc78dbab53d2adcd23e88db4c53c53c8033ecbb4a0b80a9f76362b238c3
